package de.revdev.streckenliste.dao;

import de.revdev.streckenliste.entities.Benutzer;
import de.revdev.streckenliste.entities.Revier;
import de.revdev.streckenliste.entities.Streckenliste;
import java.util.List;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.ParameterExpression;
import javax.persistence.criteria.Root;

/**
 *
 * @author f.lindermaier
 */
@Stateless
@LocalBean
public class StreckenlisteDAO extends AbstractDAO<Streckenliste> {

    @PersistenceContext(unitName = "Streckenliste-ejbPU")
    private EntityManager em;

    public StreckenlisteDAO() {
        super(Streckenliste.class);
    }

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public List<Streckenliste> holeStreckenlisten(Revier revier) {
        CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
        CriteriaQuery<Streckenliste> cq = cb.createQuery(Streckenliste.class);
        Root<Streckenliste> c = cq.from(Streckenliste.class);
        ParameterExpression<Revier> p = cb.parameter(Revier.class);
        cq.where(cb.equal(c.get("revier"), p));
        TypedQuery tq = getEntityManager().createQuery(cq);
        return (List<Streckenliste>) tq.setParameter(p, revier).getResultList();
    }
}
